<?php
namespace app\common\model;
use think\Model;
//require_once(dirname(dirname(__FILE__)) . '/Common/function.php');
class SystemLoginer extends Model
{
	
	protected $auth_key = 'A?x"nbN7hp,$<|ItOU^@Cc#&1%qyX.iPdH~u-8Jm';	//加密KEY
	
	/**
	* 用户登录认证	2017-10-15
	* @param  string  $username 用户名；$password 用户密码
	* @return integer 登录成功-用户ID，登录失败-错误编号
	*/
	public function login($username, $password){
		$map = array(
			'username'	=> $username,
		);
		$loginer = $this -> where($map) -> find();	//获取用户数据
		//$loginer = SystemLoginer::get($map);	//获取用户数据
		dump($loginer);
		exit;
		if($loginer && $loginer['status'] == 1){
			if(think_ucenter_md5($password, $this -> auth_key) === $loginer['password']){	//验证用户密码
				$this -> updatelogin($loginer['id']); //更新用户登录信息
				return $loginer['id']; //登录成功，返回用户ID
			}else{
				return -2; //密码错误
			}
		}else{
			return -1; //用户不存在或被禁用
		}
	}
	
	/**
	* 更新用户登录信息
	* @param  integer $uid 用户ID
	*/
	protected function updatelogin($uid){
		$loginerModel = M('SystemLoginer');
		$data = array(
			'id'              => $uid,
			'last_login_time' => time(),
			'last_login_ip'   => get_client_ip(1),
		);
		$loginerModel -> save($data);
	}
	
	/**
	* 登录指定用户
	* @param  integer $uid 用户ID
	* @return boolean ture-登录成功，false-登录失败
	*/
	public function usercheck($uid){
		$userModel = M('SystemUser');
		$user = $userModel -> field(true) -> find($uid);	//检测是否在当前应用注册 
		if(empty($user)){ //未注册
			$this -> error('用户不存在！');	//应用级别禁用
			return false;
		}elseif($user['status'] != 1) {
			$this -> error('用户未激活或已禁用！');	//应用级别禁用
			return false;
		}

		$this -> autologin($user);	// 登录用户 
		
		return true;
	}
	
	/**
	* 自动登录用户
	* @param  integer $user 用户信息数组
	*/
	private function autologin($user){
		$userModel = M('SystemUser');
		$data = array(
			'id'              => $user['id'],
			'login'           => array('exp', '`login`+1'),
			'lastlogintime' 	=> time(),
			'lastloginip'   	=> get_client_ip(1),
		);
		$userModel -> save($data);	//更新登录信息
	
		/* 记录登录SESSION和COOKIES */
		$auth = array(
			'uid'             => $user['id'],
			'username'        => $user['usersname'],
			'lastlogintime'   => $user['lastlogintime'],
		);
	
		session('user_auth', $auth);
		session('user_auth_sign', data_auth_sign($auth));
	}
	
	/**
	* 注册一个新用户
	* @param  string $username 用户名;string $password 用户密码;string $email 用户邮箱;string $mobile   用户手机号码
	* @return integer          注册成功-用户信息，注册失败-错误编号
	*/
	public function register($username, $password){
		$loginerModel = M('SystemLoginer');
		$data = array(
			'username' => $username,
			'password' => think_ucenter_md5($password, $this -> auth_key),
		);
		
		if($loginerModel -> create($data)){	//添加用户
			$lid = $loginerModel -> add();
			return $lid ? $lid : 0; //0-未知错误，大于0-注册成功
		}else{
			return 0;
		}
	}
	
	/**
	* 更新用户信息
	* @param int $uid 用户id;string $password 密码，用来验证;array $data 修改的字段数组
	* @return true 修改成功，false 修改失败
	*/
	public function updateinfo($lid, $password, $data){
		if(!isset($lid) || !isset($password) || !isset($data)){
			return -1;	//参数错误！
		}
		
		if($password !== false){
			$loginerModel = M('SystemLoginer');
			$loginer = $loginerModel -> find($lid);
			if(think_ucenter_md5($password, $this -> auth_key) !== $loginer['password']){	//验证用户密码
				$this -> updatelogin($loginer['id']); //更新用户登录信息
				return -2;	//验证出错：密码不正确！
			}
		}
		
		$loginerModel = M('SystemLoginer');
		if($data['password']){
			$data['password'] = think_ucenter_md5($data['password'], $this -> auth_key);
		}
		$data = $loginerModel -> create($data);

		if(!empty($data)){
			$res = $loginerModel -> where(array('id'=>$lid)) -> save($data);
			return $res;
		}else{
			return 0;
		}
	}
}
